/*
  ArtToSpr Artworks/Draw to Sprite convertor
  Copyright (c) 1998 Tony Houghton

  This source is distributed under the GPL. Please see the file
  "COPYING" for details.
*/

/* err.h */
/* Error reporting */

#ifndef __err_h
#define __err_h

#include "kernel.h"

#ifdef __cplusplus
extern "C" {
#endif

/* Whether we're running as a task or CLI */
extern bool err_is_task;

/* Task is true if this is a Wimp task, otherwise messages are printed to
   stderr */
extern void err_set_taskname(const char *, bool task);

extern bool err_check(const _kernel_oserror *);
extern void err_check_fatal(const _kernel_oserror *);

extern void err_report(int, const char *);	/* OK button only */
extern void err_complain(int, const char *);	/* Cancel & OK buttons */
extern void err_complain_fatal(int, const char *);	/* Cancel button only */

#ifdef NDEBUG
  #define E err_check
  #define EF err_check_fatal
  #define FE
#else
  extern bool err_debug_check(const _kernel_oserror *,
  	const char *file, int line, bool fatal, bool report);
  #define E(e) err_debug_check((e), __FILE__, __LINE__, false, true)
  #define EF(e) err_debug_check((e), __FILE__, __LINE__, true, true)
  #define FE(e) err_debug_check((e), __FILE__, __LINE__, false, false)
#endif

extern const char err_OutOfMem[];

#ifdef __cplusplus
}
#endif

#endif
